package all.com.jinyongqunxiax.model.mod;


import com.randy.fundation.JxAssert;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import all.com.jinyongqunxiax.BuildConfig;
import androidx.annotation.NonNull;
import jy.game.components.role.JyRole;
import jy.game.tools.BasePojoManager;

public class RoleManager {
    public Map<String, JyRole> map  = new HashMap<>();
    public List<JyRole>        list = new ArrayList<>();
    String xmlPath;

    public RoleManager(@NonNull String xmlPath) {
        this.xmlPath = xmlPath;
    }

    BasePojoManager<JyRole> manager;

    public String load() {
        map.clear();
        list.clear();

        manager = BasePojoManager.build(xmlPath, JyRole.class);
        list = manager.datas;
        if (!manager.success()) {
            return manager.message;
        }
        StringBuilder message = new StringBuilder(getClass().getSimpleName());

        for (JyRole item : list) {
            if (map.containsKey(item.name)) {
                message.append("发现重复:").append(item.name);
                continue;
            }
            map.put(item.name, item);
        }


        return manager.message;
    }

//    public String load() {
//        try {
//            map.clear();
//            list.clear();
//
//            Serializer serializer = new Persister();
//
//            File file = new File(xmlPath);
//            Root root = serializer.read(Root.class, file);
//            assert !BuildConfig.DEBUG || !root.models.isEmpty();
//
//            list = root.models;
//            for (Model model : list) {
//                map.put(model.key, model);
//            }
//
//            if (BuildConfig.DEBUG) {
//                assert map.entrySet().size() == list.size();
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            return e.getMessage();
//        }
//        return "";
//    }


//    static public class Root {
//        @ElementList(inline = true) List<Model> models;
//    }
//
//    /**
//     * <role name="小虾米"
//     * head="头像.主角"
//     * key="主角"
//     * female="0"
//     * level="1"
//     * grow_template="未来人"
//     * <p>
//     * arena="no"
//     * animation="xiake"
//     * talent=""
//     * <p>
//     * wuxue="50"
//     * <p>
//     * maxmp="1000"
//     * maxhp="1000"
//     * <p>
//     * qimen="30"
//     * daofa="30"
//     * quanzhang="30"
//     * jianfa="30"
//     * <p>
//     * wuxing="30"
//     * shenfa="30"
//     * bili="30"
//     * gengu="30"
//     * fuyuan="30"
//     * dingli="30"
//     * <p>
//     * <p>
//     * >
//     */
//    @wx.xml.simpleframework.xml.Root(name = "role")
//    static public class Model {
//        public @Attribute                String name;
//        public @Attribute(name = "head") String icon;
//
//        public @Attribute                         String key;
//        public @Attribute                         int    female;
//        public @Attribute                         int    level;
//        public @Attribute(name = "grow_template") String grow;
//        public @Attribute                         String arena;  // "no"
//        public @Attribute                         String animation;
//        public @Attribute                         String talent;
//
//        public @Attribute int wuxue;
//
//        public @Attribute int maxmp;
//        public @Attribute int maxhp;
//
//        public @Attribute int quanzhang;
//        public @Attribute int jianfa;
//        public @Attribute int daofa;
//        public @Attribute int qimen;
//
//        public @Attribute int bili;
//        public @Attribute int dingli;
//        public @Attribute int fuyuan;
//        public @Attribute int gengu;
//        public @Attribute int shenfa;
//        public @Attribute int wuxing;
//
//        public @ElementList(name = "internal_skills", required = false) List<SkillInternal> internalSkills;
//        public @ElementList(name = "skills", required = false)          List<Skill>         skills;
//        public @ElementList(name = "special_skills", required = false)  List<Skill>         specialSkills;
//        public @ElementList(name = "items", required = false)           List<Item>          items;
//    }
//
//
//    @wx.xml.simpleframework.xml.Root(name = "skill")
//    static public class Skill {
//        public @Attribute(required = false) int    equipped;
//        public @Attribute(required = false) int    level;
//        public @Attribute(required = false) int    maxlevel;
//        public @Attribute                   String name;
//    }
//
//    @wx.xml.simpleframework.xml.Root(name = "internal_skill")
//
//    static public class SkillInternal extends Skill {
//
//    }
//
//    @wx.xml.simpleframework.xml.Root(name = "item")
//    static public class Item {
//        public @Attribute String name;
//    }
}
